From f154aa7e25c05133e767d521fd0617870b2797bd Mon Sep 17 00:00:00 2001 From: "kaf24@scramble.cl.cam.ac.uk" Date: Wed, 23 Jul 2003 13:16:18 +0000 Subject: [PATCH] bitkeeper revision 1.375 (3f1e8aa2shFt1h1TJhL4XlUpbChmag) memory.c: Allow writes to non-pagetable pages via Xen pagetable interface. --- xen/common/memory.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/xen/common/memory.c b/xen/common/memory.c index 637112d241..1d58472c9f 100644 --- a/xen/common/memory.c +++ b/xen/common/memory.c @@ -786,7 +786,7 @@ static int do_extended_command(unsigned long ptr, unsigned long val) int do_process_page_updates(page_update_request_t *ureqs, int count) { page_update_request_t req; - unsigned long flags, pfn; + unsigned long flags, pfn, *ptr; struct pfn_info *page; int err = 0, i; unsigned int cmd; @@ -833,6 +833,10 @@ int do_process_page_updates(page_update_request_t *ureqs, int count) break; default: MEM_LOG("Update to non-pt page %08lx", req.ptr); + ptr = map_domain_mem(req.ptr); + *ptr = req.val; + unmap_domain_mem(ptr); + err = 0; break; } } @@ -870,7 +874,7 @@ int do_process_page_updates(page_update_request_t *ureqs, int count) req.ptr &= ~(sizeof(l1_pgentry_t) - 1); if ( current->domain == 0 ) { - unsigned long *ptr = map_domain_mem(req.ptr); + ptr = map_domain_mem(req.ptr); *ptr = req.val; unmap_domain_mem(ptr); err = 0; -- 2.30.2